package com.demo.java.OD51_100.OD75;

import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【内存资源分配】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145620184
 */
public class OdMain {
    public static void solve(String[] lineValues, String[] requests) {
        // 存储内存块大小及数量
        List<Integer> existList = new ArrayList<>();
        Map<Integer, Integer> hashmap = new HashMap<>();

        // 解析内存池配置，存储内存块类型和数量
        for (String line : lineValues) {
            String[] typeCount = line.split(":");
            int type = Integer.parseInt(typeCount[0]);
            int count = Integer.parseInt(typeCount[1]);
            existList.add(type);
            hashmap.put(type, count);
        }

        // 排序：确保我们总是从最小的内存块开始分配
        Collections.sort(existList);

        // 处理每个请求
        for (String request : requests) {
            boolean allocated = false;
            int requiredSize = Integer.parseInt(request);

            // 尝试从内存池中找到最小的符合请求大小的内存块
            for (int i = 0; i < existList.size(); ++i) {
                int blockSize = existList.get(i);

                // 找到符合请求的内存块
                if (blockSize >= requiredSize && hashmap.get(blockSize) > 0) {
                    // 分配内存块
                    hashmap.put(blockSize, hashmap.get(blockSize) - 1);

                    // 如果该内存块数量为0，则从列表中移除该内存块
                    if (hashmap.get(blockSize) == 0) {
                        existList.remove(i);
                    }

                    allocated = true;
                    break;
                }
            }

            // 输出分配结果
            System.out.print(allocated + " ");
        }
    }

    public static void main(String[] args) {
        try {
            Scanner s = new Scanner(System.in);

            // 输入内存池配置
            String[] lineValues = s.nextLine().split(",");
            // 输入内存分配请求
            String[] requests = s.nextLine().split(",");

            solve(lineValues, requests);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("input error");
        }
    }
}